From 9f6067a8043129ddcc0e223111d3b5a79c7b8100 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Fri, 2 Nov 2012 00:33:42 +0100 Subject: [PATCH] sizegroup: Handle hfw in size groups --- gtk/gtksizegroup-private.h | 1 + gtk/gtksizegroup.c | 19 ++++++++++++++++--- gtk/gtksizerequest.c | 1 + 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/gtk/gtksizegroup-private.h b/gtk/gtksizegroup-private.h index dc813cdb2e..59ef781626 100644 --- a/gtk/gtksizegroup-private.h +++ b/gtk/gtksizegroup-private.h @@ -39,6 +39,7 @@ typedef enum void _gtk_size_group_bump_requisition (GtkWidget *widget, GtkSizeGroupMode mode, + gint for_size, gint *minimum, gint *natural); void _gtk_size_group_queue_resize (GtkWidget *widget, diff --git a/gtk/gtksizegroup.c b/gtk/gtksizegroup.c index 594e90af5b..3385e04131 100644 --- a/gtk/gtksizegroup.c +++ b/gtk/gtksizegroup.c @@ -630,6 +630,7 @@ gtk_size_group_get_widgets (GtkSizeGroup *size_group) static void compute_dimension (GtkWidget *widget, GtkSizeGroupMode mode, + gint for_size, gint *minimum, /* in-out */ gint *natural) /* in-out */ { @@ -654,9 +655,19 @@ compute_dimension (GtkWidget *widget, else { if (mode == GTK_SIZE_GROUP_HORIZONTAL) - gtk_widget_get_preferred_width (tmp_widget, &min_dimension, &nat_dimension); + { + if (for_size < 0) + gtk_widget_get_preferred_width (tmp_widget, &min_dimension, &nat_dimension); + else + gtk_widget_get_preferred_width_for_height (tmp_widget, for_size, &min_dimension, &nat_dimension); + } else - gtk_widget_get_preferred_height (tmp_widget, &min_dimension, &nat_dimension); + { + if (for_size < 0) + gtk_widget_get_preferred_height (tmp_widget, &min_dimension, &nat_dimension); + else + gtk_widget_get_preferred_height_for_width (tmp_widget, for_size, &min_dimension, &nat_dimension); + } } min_result = MAX (min_result, min_dimension); @@ -676,6 +687,7 @@ compute_dimension (GtkWidget *widget, * @widget: a #GtkWidget * @mode: either %GTK_SIZE_GROUP_HORIZONTAL or %GTK_SIZE_GROUP_VERTICAL, depending * on the dimension in which to bump the size. + * @for_size: Size to request minimum and natural size for * @minimum: a pointer to the widget's minimum size * @natural: a pointer to the widget's natural size * @@ -689,6 +701,7 @@ compute_dimension (GtkWidget *widget, void _gtk_size_group_bump_requisition (GtkWidget *widget, GtkSizeGroupMode mode, + gint for_size, gint *minimum, gint *natural) { @@ -698,7 +711,7 @@ _gtk_size_group_bump_requisition (GtkWidget *widget, _gtk_widget_set_sizegroup_bumping (widget, TRUE); if (_gtk_widget_get_sizegroups (widget)) - compute_dimension (widget, mode, minimum, natural); + compute_dimension (widget, mode, for_size, minimum, natural); _gtk_widget_set_sizegroup_bumping (widget, FALSE); } diff --git a/gtk/gtksizerequest.c b/gtk/gtksizerequest.c index 0a9b1bacc2..c0e461fe0a 100644 --- a/gtk/gtksizerequest.c +++ b/gtk/gtksizerequest.c @@ -469,6 +469,7 @@ compute_size_for_orientation (GtkWidget *widget, */ _gtk_size_group_bump_requisition (widget, orientation, + for_size, &min_size, &nat_size); -- 2.30.2